var REGISTROS_MAXIMOS = 10;

$(document).ready(function(){
	articuloAutocomplete();
	inicializarPrecio();
	actualizarBotonEliminar();
});

//INICIALIZA EL CALCULO DE LOS PRECIOS
function inicializarPrecio(){
	$(".recalcularPrecio").unbind("change");
	$(".recalcularPrecio").bind("change",calcularPrecioDetalle);
}

function actualizarStock(miThis){
	var inputs_base = $(miThis).parent().parent().find('input');
	var input_tr = $(miThis).parent().parent().find('input[type=hidden]');
	var miArticulo = isNaN(parseFloat($(input_tr[3]).val()))?"0":parseFloat($(input_tr[3]).val());
	var select = $(miThis).parent().find("select option:selected");
	var miAlmacen = isNaN(parseFloat($(select[0]).val()))?"0":parseFloat($(select[0]).val());
	
	//verificamos que no se repita la combinacion articulo/almacen
	var tbody = $('table#detalleFacturasForm tbody');
	$(inputs_base[7]).attr('value','');
	$(inputs_base[8]).attr('value','');
		
	var selecionado = 0;
	tbody.find('tr').each(function(i,tr){
		var inputs = $(tr).find("input[type=hidden]");
		var select = $(tr).find("select option:selected");
		var articulo_id = isNaN(parseFloat($(inputs[3]).val()))?"0":parseFloat($(inputs[3]).val());
		var almacen_id = isNaN(parseFloat($(select[0]).val()))?"0":parseFloat($(select[0]).val());
		if((articulo_id == miArticulo) && (almacen_id == miAlmacen)){
			if(selecionado <= 0){
				selecionado += 1;
				$(inputs_base[7]).attr('value',miAlmacen);
				$(inputs_base[8]).attr('value',select.attr('stock'));
			}else{
				$(miThis).attr('value','');
				$(inputs_base[7]).attr('value','');
				$(inputs_base[8]).attr('value','');
				alert('Articulo/Almacen ya seleccionado');
				return false;
			}
		}  
	});
	
	actualizarAgregarSubDetalle();
}
//AGREGA LA OPCION DE AUTOCOMPLETADO PARA LOS ARTICULOS
function articuloAutocomplete(){
	$(".articuloDescripcion").autocomplete({
		source: "articulos/getArticulosListaJson",
		minLength: 5,
		select: function(event, item){
			//verificamos que el articulo no aya sido seleccionado
			var inputs = $(this).parent().parent().find('input');
			if(!(item.item.id === null)){
				$(inputs[0]).attr('value',item.item.costo_soles);
				$(inputs[1]).attr('value',item.item.costo_dolares);
				$(inputs[2]).attr('value',item.item.igv);
				
				$(inputs[4]).attr('value',item.item.id);
				$(inputs[5]).attr('value',item.item.unidadxcaja);
				$(inputs[6]).attr('value',item.item.unidad);
				actualizarAlmacenesArticulo($(this).parent().parent(),$(inputs[4]));
				actualizarCostoPorMoneda();
			}else{
				$(inputs).attr('value','');
				$(this).parent().parent().find('select').html('');
			}
		}
	});	
}

//BUSCA LOS ALMACENES EN LOS CUALES HAY STOCK DEL ARTICULO
function actualizarAlmacenesArticulo(tr,articulo){
	var articulo_id = articulo.attr('value');
	var almacenes = tr.find('select');
	almacenes.html('<option selected value="">Seleccionar</option>');
	$.ajax({
		type:'GET',
		url:'almacenes_articulos/getAlmacenesArticulo',
		data:{articulo:articulo_id},
		dataType:'json',
		success:function(response){
			var options = '';
			$.each(response.Almacen,function(i,e){
				options += '<option stock="'+e.stock+'" value="'+e.id+'">'+e.almacen+'</option>';
			});
			almacenes.append(options);
		}
	});
}

//ACTUALIZA EL COSTO DE ACUERDO A LA MONEDA SELECCIONADA
function actualizarCostoPorMoneda(){
	var moneda = $('#FacturaMonedaId').val();
	var tbody = $('table#detalleFacturasForm tbody');
	
	tbody.find('tr').each(function(i,tr){
		var inputs = $(tr).find("input");
		
		var costo = isNaN(parseFloat($(inputs[moneda-1]).val()))?"0":parseFloat($(inputs[moneda-1]).val());
		$(inputs[10]).attr('value',number_format(costo,2,'.',''));
	});
	calcularPrecioDetalle();
}

//CALCULA EL PRECIO CON Y SIN IGV DE CADA DETALLE
function calcularPrecioDetalle(){
	var tbody = $('table#detalleFacturasForm tbody');	
	tbody.find('tr').each(function(i,tr){
		var inputs = $(tr).find("input[type=text]");
		var cantidad = isNaN(parseFloat($(inputs[4]).val()))?"0":parseFloat($(inputs[4]).val());
		var preciosinigv = isNaN(parseFloat($(inputs[5]).val()))?"0":parseFloat($(inputs[5]).val());
		$(inputs[6]).attr("value",number_format(cantidad*preciosinigv,2,'.',''));
	});
	calcularPrecioTotal();
}

//CALCULA EL COSTO DE LAS CANTIDADES TOTALIZADAS DE LA CABECERA DE LA ORDEN COMPRA
function calcularPrecioTotal(){
	var igv = isNaN(parseFloat($('#FacturaIgv').val()))?0:parseFloat($('#FacturaIgv').val());
	var tbody = $('table#detalleFacturasForm tbody');
	var costototalsigv = 0.00;
	
	tbody.find('tr').each(function(i,tr){
		var inputs = $(tr).find("input[type=text]");
		var preciosinigv = isNaN(parseFloat($(inputs[6]).val()))?"0":parseFloat($(inputs[6]).val());
		costototalsigv += parseFloat(preciosinigv);
	});
	
	$('#FacturaMontoSinIgv').attr('value', number_format(costototalsigv,2,'.',''));
	$('#FacturaMontoIgv').attr('value', number_format(costototalsigv*igv/100,2,'.',''));
	$('#FacturaMontoConIgv').attr('value', number_format(costototalsigv*(100+igv)/100,2,'.',''));
}

//PERMITE AGREGAR UN NUEVO REGISTRO A LA TABLA DE DETALLES  ###############################################################
function agregarRegistro(){
	var tbody = $('table#detalleFacturasForm tbody');
	var numero_registros = tbody.find('tr').length;
	
	if(numero_registros == REGISTROS_MAXIMOS){
		alert('MAXIMO NUMERO DE DETALLES ALCANZADO');
		return false;
	}
	
	var primer_registro = tbody.find("tr:first").clone();
	primer_registro.find("input,select").each(function(i,e){
		$(e).attr("name",$(e).attr("name").replace("data[Detalles][0","data[Detalles]["+numero_registros));
		$(e).attr("id",$(e).attr("id").replace("Detalles0","Detalles"+numero_registros));
		$(e).attr("value","");
		
		if(e.type == 'select-one'){
			$(e).attr("disabled","");
			$(e).html('<option value=""></option>');
		};
	});
	
	tbody.append(primer_registro);
	articuloAutocomplete();
	actualizarBotonEliminar();
	inicializarPrecio();
}

//PERMITE VISUALIZAR EL BOTON ELIMINAR
function actualizarBotonEliminar(){
	var tbody = $('table#detalleFacturasForm tbody');
	var numero_registros = tbody.find('tr').length;
	if(numero_registros == 1){ tbody.find('tr:first .eliminarRegistro').addClass('hide'); }
	else{ tbody.find('tr .eliminarRegistro').removeClass('hide'); }
	
	actualizarAgregarSubDetalle();
}

//ELIMINA UN REGISTRO
function eliminarRegistro(miThis){
	$(miThis).parent().parent().remove();
	actualizarNumeracionRegistro();
	actualizarBotonEliminar();
	calcularPrecioDetalle();
}

//REINICIA LA NUMERACION DE LOS DETALLES
function actualizarNumeracionRegistro(){
	var tbody = $('table#detalleFacturasForm tbody');
	tbody.find('tr').each(function(i,tr){
		$(tr).find('input, select').each(function(j,e){
			$(e).attr('id', $(e).attr('id').replace(/^Detalles./, 'Detalles'+i));
			$(e).attr('name', $(e).attr('name').replace(/^data\[Detalles\]\[./, 'data[Detalles]['+i));
		});		
	});
}

//########################################################################
//ACTUALIZAR LOS SUB DETALLES
function actualizarAgregarSubDetalle(){
	var tbody = $('table#detalleFacturasForm tbody');
	tbody.find('tr').each(function(i,e_tr){
		if(isNaN(parseFloat($(e_tr).find('select option:selected').attr('value')))){
			$(e_tr).find('.agregarSubDetalle').addClass('hide');
		}else{
			$(e_tr).find('.agregarSubDetalle').removeClass('hide');
		}
	});
}

function agregarSubDetalle(miThis){
	// VERIFICAMOS EL NUMERO DE DETALLES
	var tbody = $('table#detalleFacturasForm tbody');
	var numero_registros = tbody.find('tr').length;
	if(numero_registros == REGISTROS_MAXIMOS){
		alert('MAXIMO NUMERO DE DETALLES ALCANZADO');
		return false;
	}
	
	var tr_clon = $(miThis).parent().parent().clone();
	var inputs = tr_clon.find("input[type=text]").each(function(i,e){
		if((i==3)||(i==4)||(i==6)) $(e).attr('value','');
	});
	$(miThis).parent().parent().after(tr_clon);
	actualizarNumeracionRegistro();
	actualizarBotonEliminar();
	calcularPrecioDetalle();
	inicializarPrecio();
}